package com.yan.design.one.principle1.o6;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 设计模式 ： 7大原则
 *      6. 迪米特法则
 *           也是最小知道原则，一个类对自己依赖的类越少越好。
 *           直接朋友/间接朋友
 * @author shengren.yan
 * @create 2022-07-09
 */
public class principle6 {

    public static void main(String[] args) {
        ManagerB b =new ManagerB();
        b.getALL(new ManagerA());
    }

    @Data
    @AllArgsConstructor
    static class A{
        private String id;
    }

    @Data
    @AllArgsConstructor
    static class B{
        private String id;
    }


    static class ManagerA{
        public List<A> getAList(){
            List<A> list = new ArrayList<>();
            list.add(new A("a1"));
            list.add(new A("a2"));
            return list;
        }

        void dd(){
            // 原始的  A 是依赖朋友，改成
            List<A> aList = this.getAList();
            System.out.println(aList);
        }
    }
    static class ManagerB{
        public List<B> getBList(){
            List<B> list = new ArrayList<>();
            list.add(new B("b1"));
            list.add(new B("b2"));
            return list;
        }
        // 获取 A 和 B所有的数据
        void getALL(ManagerA a){
            // 原始的  A 是依赖朋友，改成
            // List<A> aList = a.getAList();
            // System.out.println(aList);
            // 改成 ,这样调用者不需要知道 a做什么
            a.dd();

            List<B> bList = this.getBList();
            System.out.println(bList);
        }
    }


}
